21 Network
网络模型
地址分为Mac地址与IP地址。Mac地址可以标识机器,IP地址可以标识机器的地区。
下图是通过交换机、路由器进行数据传输的例子。路由器会相应地改变传输者、接收者的Mac地址,但不会改变IP地址。

获得IP后,机器通过ARP(address resolution control)获取Mac地址。
TCP/IP 协议
TCP/IP 协议分为四层,自下到上分别是:物理层(link layer),负责物理上的网络包传输;网络层(network layer),与IP相关;传输层(transport layer),包含TCP(负责数据的可靠性)、UDP(负责性能)等协议;应用层,包含HTTP等协议,是应用之间约定的协议。
用户通过socket封装相应的数据传输。

DNS
将域名转换为IP地址的服务称为DNS。
域名和IP可以是一对一/多对一/多对多的关系。
每个主机都有一个本地域名,称为localhost。
端口
连接时除了IP地址还需要端口。端口是一个16位整数,标识一个进程。
socket

客户端通过 socket 函数打开网络包, connect 连接(成功即可读写);服务器通过 accept 等待连接; bind 进行socket间的连接; listen 用于真正的监听。
socket();
connect();
accept();
bind();
listen();
accept的具体过程为:
- 服务器创建
listen_fd,客户端创建clien_fd。 - 客户发起请求,被服务器接收。
- 服务器返回
connfd,用于数据传输。原有的listen_fd继续监听其它客户。